<HTML>
<HEAD>
<TITLE>
ComponenteAlmacenamiento.h
</TITLE>
</HEAD>
<BODY>
<PRE>
<font color="blue">#ifndef</font> COMPONENTEALMACENAMIENTO_H_
<font color="blue">#define</font> COMPONENTEALMACENAMIENTO_H_

<font color="blue">#include</font> <font color="maroon">"../Dato.h"</font>
<font color="blue">#include</font> <font color="maroon">"../../enums/TipoSerializacion.h"</font>
<font color="blue">#include</font> <font color="maroon">"../../enums/TipoMemoria.h"</font>
<font color="blue">#include</font> <font color="maroon">"../../enums/TipoPKException.h"</font>
<font color="blue">#include</font> <font color="maroon">"../../enums/TipoIdException.h"</font>
<font color="blue">#include</font> <font color="maroon">"../../exceptions/PKException.h"</font>
<font color="blue">#include</font> <font color="maroon">"../../exceptions/IdException.h"</font>
<font color="blue">#include</font> <font color="maroon">"../PrimaryKey.h"</font>

<font color="blue">using</font> <font color="blue">namespace</font> std;

<font color="blue">class</font> ComponenteAlmacenamiento<font color="black">{</font>
        <font color="blue">protected</font><font color="black">:</font>
            <font color="blue">int</font> id;
            TipoMemoria tipoMemoria;
            <font color="blue">unsigned</font> <font color="blue">int</font> tamanio;
    
        <font color="blue">public</font><font color="black">:</font>
                
        <font color="blue">static</font> <font color="blue">const</font> <font color="blue">int</font> idSinAsignar <font color="black">=</font> <font color="maroon">-1</font>; 
        
        <font color="green">/**
         * @author emilio
         * @return int id
         * @version
         */</font>
        <font color="blue">int</font> getId<font color="black">(</font><font color="black">)</font>;
        
        <font color="green">/**
         * @author emilio
         * @param void** accesoDato
         * @return void
         * @version
         */</font>
        virtual <font color="blue">void</font> getAccesoDato<font color="black">(</font><font color="blue">void</font><font color="black">*</font><font color="black">*</font> accesoDato<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="green">/**
         * @author emilio
         * @return int id
         * @version
         */</font>
        <font color="blue">unsigned</font> <font color="blue">int</font> getTamanio<font color="black">(</font><font color="black">)</font>;
        
        <font color="green">/**
         * @author emilio
         * @return TipoMemoria tipo
         * @version
         */</font>
        TipoMemoria getTipoMemoria<font color="black">(</font><font color="black">)</font>;
        
        <font color="green">/**
         * &#60;b&#62;Escribe el registro.&#60;/b&#62; Si no se puede escribir porque hay alg&uacute;n 
         * problema en el almacenamiento, se arroja una excepci&oacute;n que herede de
         * StorageException. 
         * 
         * @author emilio
         * @throws StorageException
         * @throws NullPointerException
         * @throws IdException
         * @param void* accesoDato
         * @param Dato* dato (opcional)
         * @version
         */</font>
        virtual <font color="blue">void</font> escribir<font color="black">(</font><font color="blue">void</font> <font color="black">*</font>accesoDato,TipoSerializacion modo<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="green">/**
         * &#60;b&#62;Actualiza el registro.&#60;/b&#62; Si no se puede escribir porque hay 
         * alg&uacute;n problema en el almacenamiento, se arroja una excepci&oacute;n 
         * que herede de StorageException. Si el id del nuevo dato no coincide con el 
         * anterior se arroja una excepci&oacute;n de la clase IdException.
         * 
         * @author emilio
         * @throws StorageException
         * @throws NullPointerException
         * @throws IdException
         * @param TipoSerializacion modo
         * @param void* accesoDato
         * @param Dato* dato (opcional)
         * @version
         */</font>
        virtual <font color="blue">void</font> escribir<font color="black">(</font><font color="blue">void</font> <font color="black">*</font>accesoDato, Dato <font color="black">*</font>dato, TipoSerializacion modo<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;       
                 
        <font color="green">/**
         * &#60;b&#62;Escribe el registro.&#60;/b&#62; Si no se puede escribir porque hay alg&uacute;n 
         * problema en el almacenamiento, se arroja una excepci&oacute;n que herede de
         * StorageException. 
         * 
         * @author emilio
         * @throws StorageException
         * @throws NullPointerException
         * @throws IdException
         * @param Dato* dato (opcional)
         * @version
         */</font>
        virtual <font color="blue">void</font> escribir<font color="black">(</font>TipoSerializacion modo<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;

        <font color="green">/**
         * &#60;b&#62;Lee el registro.&#60;/b&#62; Si no se puede leer porque hay alg&uacute;n
         * problema en el almacenamiento, se arroja una excepci&oacute;n que herede de
         * StorageException.
         * 
         * @author emilio
         * @throws StorageException
         * @throws NullPointerException
         * @param TipoSerializacion modo
         * @param  Dato *datoLeido (debe venir vacio)
         * @version
         */</font>
        virtual <font color="blue">void</font> leer<font color="black">(</font>Dato <font color="black">*</font>datoLeido, TipoSerializacion modo<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="green">/**
         * &#60;b&#62;Lee el registro.&#60;/b&#62; Si no se puede leer porque hay alg&uacute;n
         * problema en el almacenamiento, se arroja una excepci&oacute;n que herede de
         * StorageException.
         * 
         * @author emilio
         * @throws StorageException
         * @throws NullPointerException
         * @param TipoSerializacion modo
         * @param  char** datoLeido(debe apuntar a null antes de la llamada)
         * @version
         */</font>
        virtual <font color="blue">void</font> leer<font color="black">(</font><font color="blue">char</font> <font color="black">*</font><font color="black">*</font>datoLeido, TipoSerializacion modo<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="green">/**
         * &#60;b&#62;Borra el registro.&#60;/b&#62; Si no se puede borrar porque hay alg&uacute;n 
         * problema en el almacenamiento, se arroja una excepci&oacute;n que herede de
         * StorageException. 
         * 
         * @author emilio
         * @throws StorageException
         * @throws NullPointerException
         * @version
         */</font>
        virtual <font color="blue">void</font> borrar<font color="black">(</font><font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
<font color="black">}</font>;

<font color="blue">#endif</font> <font color="green">/*COMPONENTEALMACENAMIENTO_H_*/</font>

</PRE>
</BODY>
</HTML>
